package com.mdc.mansion.dataaccess.common.service;


import com.mdc.mansion.dataaccess.common.persistence.Page;

import java.util.Date;
import java.util.List;

public interface BaseService<T> {
	/**
	 * 获取单条数据
	 * @param id
	 * @return
	 */
	public T get(String id);
	
	/**
	 * 获取单条数据
	 * @param entity
	 * @return
	 */
	public T get(T entity);
	
	/**
	 * 查询列表数据
	 * @param entity
	 * @return
	 */
	public List<T> findList(T entity);
	/**
	 * 查询分页数据
	 * @param page 分页对象
	 * @param entity
	 * @return
	 */
	public Page<T> findPage(Page<T> page, T entity);

	/**
	 *查询分页数据
	 * @param entity
	 * @return
	 */
	public Page<T> findPage(T entity);

	/**
	 * 保存数据(插入或者修改)
	 * @param entity
	 */
	public void save(T entity);

	/**
	 * 保存数据（更新）
	 * @param entity
	 */
	public void update(T entity);

	/**
	 * 保存数据（更新）
	 * @param entity
	 */
	public void updateSelective(T entity);

	/**
	 * 删除数据
	 * @param entity
	 */
	public void delete(T entity);
	
	
	/**
	 * info日志
	 * @param access
	 * @param time
	 * @param descrip
	 * @param rsp
	 * @param req
	 */
	public void loggerInfo(Date access, long time, String descrip, Object rsp, Object... req);
	/**
	 * 错误日志
	 * @param access
	 * @param time
	 * @param descrip
	 * @param t 异常错误
	 * @param rsp
	 * @param req
	 */
	public void loggerError(Date access, long time, String descrip, Throwable t, Object rsp, Object... req);
	
	/**
	 * debug信息
	 * @param access
	 * @param descrip
	 */
	public void loggerDebug(Date access, String descrip);
}
